package com.banyou.banyou.login.regist;

import com.alibaba.fastjson.JSONObject;
import com.banyou.banyou.base.BasePresenter;
import com.banyou.banyou.bean.login.regist.RegistBean;
import com.banyou.banyou.webutils.SubscriberOnErrorListener;
import com.banyou.banyou.webutils.SubscriberOnNextListener;
import com.banyou.banyou.webutils.UpLoadImage;

import java.util.Map;

/**
 * ----------Dragon be here!----------/
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　　┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　┃
 * 　　┃　　　　　　　┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛
 * 　　　　┃　　　┃神兽保佑
 * 　　　　┃　　　┃代码无BUG！
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━神兽出没━━━━━━
 * 类描述：
 * 创建人：Random
 * 修改时间：
 * 修改备注：
 */

public class RegistPresenter extends BasePresenter<RegistActivity, RegistModel> implements RegistContract.Presenter {
    /**
     * 获取验证码
     * @param phoneNum
     */
    @Override
    public void getCode(String phoneNum) {
        SubscriberOnNextListener onNext=new SubscriberOnNextListener() {
            @Override
            public void onNext(Object o) {
                if(mView!=null){
                    mView.getCodeSuccess();
                }
            }
        };
        SubscriberOnErrorListener onError=new SubscriberOnErrorListener() {
            @Override
            public void onError(Throwable e) {
                if(mView!=null){
                    mView.getCodeFail();
                }
            }

            @Override
            public void onError() {

            }
        };
        mModel.setListener(onNext,onError,mView);
        mModel.getCode(phoneNum);
    }

    /**
     * 上传身份证
     * @param file
     */
    @Override
    public void uploadCard(String file) {
        final String fileName="image"+System.currentTimeMillis();
        SubscriberOnNextListener onNext=new SubscriberOnNextListener() {
            @Override
            public void onNext(Object o) {
                if (mView!=null){
                    mView.uploadCardSuccess(fileName);
                }
            }
        };

        SubscriberOnErrorListener onError=new SubscriberOnErrorListener() {
            @Override
            public void onError(Throwable e) {
                if(mView!=null){
                    mView.uploadCardFail(e);
                }
            }

            @Override
            public void onError() {

            }
        };
        UpLoadImage.filesToMultipartBody(fileName,new String[]{file},onNext,onError,mView);
    }

    /**
     * 上传头像
     * @param file
     */
    @Override
    public void uploadHead(String file) {
        final String fileName="image"+System.currentTimeMillis();
        SubscriberOnNextListener onNext=new SubscriberOnNextListener() {
            @Override
            public void onNext(Object o) {
                if (mView!=null){
                    mView.uploadHeadSuccess(fileName);
                }
            }
        };

        SubscriberOnErrorListener onError=new SubscriberOnErrorListener() {
            @Override
            public void onError(Throwable e) {
                if(mView!=null){
                    mView.uploadHeadFail(e);
                }
            }

            @Override
            public void onError() {

            }
        };
        UpLoadImage.filesToMultipartBody(fileName,new String[]{file},onNext,onError,mView);
    }

    /**
     * 注册接口
     * @param json
     */
    @Override
    public void regist(Map<String,String> json) {
        SubscriberOnNextListener onNext=new SubscriberOnNextListener() {
            @Override
            public void onNext(Object o) {
                if (mView!=null){
                    mView.registSuccess();
                }
            }
        };

        SubscriberOnErrorListener onError=new SubscriberOnErrorListener() {
            @Override
            public void onError(Throwable e) {
                if(mView!=null){
                    mView.registFail(e);
                }
            }

            @Override
            public void onError() {

            }
        };
        mModel.setRegistListener(onNext,onError,mView);
        mModel.regist(json);
    }
}
